<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LINE 1 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-1"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span class="hs-comment">{- |
   Module      :  Graphics.Win32.LayeredWindow
   Copyright   :  2012-2013 shelarcy
   License     :  BSD-style

   Maintainer  :  shelarcy@gmail.com
   Stability   :  Provisional
   Portability :  Non-portable (Win32 API)

   Provides LayeredWindow functionality.
-}</span><span>
</span><span id="line-13"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Graphics.Win32.LayeredWindow</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Graphics.Win32.LayeredWindow</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">Graphics.Win32.Window.c_GetWindowLongPtr</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-14"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span>   </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">void</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-15"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data.Bits</span><span>       </span><span class="hs-special">(</span><span> </span><span class="hs-special">(</span><span class="hs-operator">.|.</span><span class="hs-special">)</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-16"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Foreign.Ptr</span><span>     </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-17"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Foreign.Marshal.Utils</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">with</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-18"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Graphics.Win32.GDI.AlphaBlend</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">BLENDFUNCTION</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-19"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Graphics.Win32.GDI.Types</span><span>      </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">COLORREF</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">HDC</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">SIZE</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">SIZE</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">POINT</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-20"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Graphics.Win32.Window</span><span>         </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">WindowStyleEx</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">c_GetWindowLongPtr</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">c_SetWindowLongPtr</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-21"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">System.Win32.Types</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">DWORD</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">HANDLE</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">BYTE</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">BOOL</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-special">)</span><span class="hs-cpp">


#include &quot;windows_cconv.h&quot;
</span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span class="hs-identifier">toLayeredWindow</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HANDLE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-28"></span><span class="hs-identifier">toLayeredWindow</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-29"></span><span>  </span><span class="hs-identifier">flg</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">c_GetWindowLongPtr</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">gWL_EXSTYLE</span><span>
</span><span id="line-30"></span><span>  </span><span class="hs-identifier">void</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">with</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fromIntegral</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">flg</span><span> </span><span class="hs-operator">.|.</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fromIntegral</span><span> </span><span class="hs-identifier">wS_EX_LAYERED</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_SetWindowLongPtr</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">gWL_EXSTYLE</span><span>
</span><span id="line-31"></span><span>
</span><span id="line-32"></span><span class="hs-comment">-- test w =  c_SetLayeredWindowAttributes w 0 128 lWA_ALPHA</span><span>
</span><span id="line-33"></span><span>
</span><span id="line-34"></span><span class="hs-identifier">gWL_EXSTYLE</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">INT</span><span>
</span><span id="line-35"></span><span class="hs-identifier">gWL_EXSTYLE</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-glyph">-</span><span class="hs-number">20</span><span>
</span><span id="line-36"></span><span class="hs-pragma">{-# LINE 36 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span class="hs-identifier">wS_EX_LAYERED</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">WindowStyleEx</span><span>
</span><span id="line-38"></span><span class="hs-identifier">wS_EX_LAYERED</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">524288</span><span>
</span><span id="line-39"></span><span class="hs-pragma">{-# LINE 39 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-39"></span><span>
</span><span id="line-40"></span><span class="hs-identifier">lWA_COLORKEY</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">lWA_ALPHA</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-41"></span><span class="hs-identifier">lWA_COLORKEY</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">1</span><span>
</span><span id="line-42"></span><span class="hs-pragma">{-# LINE 42 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-42"></span><span class="hs-identifier">lWA_ALPHA</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-number">2</span><span>
</span><span id="line-43"></span><span class="hs-pragma">{-# LINE 43 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h SetLayeredWindowAttributes&quot;</span><span>
</span><span id="line-45"></span><span>  </span><span class="hs-identifier">c_SetLayeredWindowAttributes</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HANDLE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">COLORREF</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">BYTE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BOOL</span><span>
</span><span id="line-46"></span><span>
</span><span id="line-47"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h GetLayeredWindowAttributes&quot;</span><span>
</span><span id="line-48"></span><span>  </span><span class="hs-identifier">c_GetLayeredWindowAttributes</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HANDLE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">COLORREF</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BYTE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BOOL</span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h UpdateLayeredWindow&quot;</span><span>
</span><span id="line-51"></span><span>  </span><span class="hs-identifier">c_UpdateLayeredWindow</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HANDLE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">POINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">SIZE</span><span> </span><span class="hs-glyph">-&gt;</span><span>  </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">POINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">COLORREF</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BLENDFUNCTION</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BOOL</span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span class="hs-identifier">uLW_ALPHA</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-54"></span><span class="hs-identifier">uLW_ALPHA</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">2</span><span>
</span><span id="line-55"></span><span class="hs-identifier">uLW_COLORKEY</span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-56"></span><span class="hs-identifier">uLW_COLORKEY</span><span>  </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">1</span><span>
</span><span id="line-57"></span><span class="hs-identifier">uLW_OPAQUE</span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-58"></span><span class="hs-identifier">uLW_OPAQUE</span><span>    </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">4</span><span>
</span><span id="line-59"></span><span>
</span><span id="line-60"></span><span class="hs-pragma">{-# LINE 58 &quot;libraries\\Win32\\Graphics\\Win32\\LayeredWindow.hsc&quot; #-}</span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span></pre></body></html>